39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
73#define ADC28_REG_SYSTEM_STATUS 0x00
74#define ADC28_REG_GENERAL_CFG 0x01
75#define ADC28_REG_DATA_CFG 0x02
76#define ADC28_REG_BUSY_CFG 0x03
77#define ADC28_REG_OPMODE_CFG 0x04
78#define ADC28_REG_PIN_CFG 0x05
79#define ADC28_REG_GPO_VALUE 0x0B
80#define ADC28_REG_SEQUENCE_CFG 0x10
81#define ADC28_REG_MANUAL_CH_SEL 0x11
82#define ADC28_REG_AUTO_SEQ_CH_SEL 0x12
83#define ADC28_REG_ALERT_CH_SEL 0x14
84#define ADC28_REG_EVENT_FLAG 0x18
85#define ADC28_REG_EVENT_HIGH_FLAG 0x1A
86#define ADC28_REG_EVENT_LOW_FLAG 0x1C
87#define ADC28_REG_EVENT_RGN 0x1E
88#define ADC28_REG_HYSTERESIS_CH0 0x20
89#define ADC28_REG_HIGH_TH_CH0 0x21
90#define ADC28_REG_EVENT_COUNT_CH0 0x22
91#define ADC28_REG_LOW_TH_CH0 0x23
92#define ADC28_REG_HYSTERESIS_CH1 0x24
93#define ADC28_REG_HIGH_TH_CH1 0x25
94#define ADC28_REG_EVENT_COUNT_CH1 0x26
95#define ADC28_REG_LOW_TH_CH1 0x27
96#define ADC28_REG_HYSTERESIS_CH2 0x28
97#define ADC28_REG_HIGH_TH_CH2 0x29
98#define ADC28_REG_EVENT_COUNT_CH2 0x2A
99#define ADC28_REG_LOW_TH_CH2 0x2B
100#define ADC28_REG_HYSTERESIS_CH3 0x2C
101#define ADC28_REG_HIGH_TH_CH3 0x2D
102#define ADC28_REG_EVENT_COUNT_CH3 0x2E
103#define ADC28_REG_LOW_TH_CH3 0x2F
104#define ADC28_REG_HYSTERESIS_CH4 0x30
105#define ADC28_REG_HIGH_TH_CH4 0x31
106#define ADC28_REG_EVENT_COUNT_CH4 0x32
107#define ADC28_REG_LOW_TH_CH4 0x33
108#define ADC28_REG_HYSTERESIS_CH5 0x34
109#define ADC28_REG_HIGH_TH_CH5 0x35
110#define ADC28_REG_EVENT_COUNT_CH5 0x36
111#define ADC28_REG_LOW_TH_CH5 0x37
112#define ADC28_REG_HYSTERESIS_CH6 0x38
113#define ADC28_REG_HIGH_TH_CH6 0x39
114#define ADC28_REG_EVENT_COUNT_CH6 0x3A
115#define ADC28_REG_LOW_TH_CH6 0x3B
116#define ADC28_REG_HYSTERESIS_CH7 0x3C
117#define ADC28_REG_HIGH_TH_CH7 0x3D
118#define ADC28_REG_EVENT_COUNT_CH7 0x3E
119#define ADC28_REG_LOW_TH_CH7 0x3F
120#define ADC28_REG_RECENT_CH0_LSB 0xA0
121#define ADC28_REG_RECENT_CH0_MSB 0xA1
122#define ADC28_REG_RECENT_CH1_LSB 0xA2
123#define ADC28_REG_RECENT_CH1_MSB 0xA3
124#define ADC28_REG_RECENT_CH2_LSB 0xA4
125#define ADC28_REG_RECENT_CH2_MSB 0xA5
126#define ADC28_REG_RECENT_CH3_LSB 0xA6
127#define ADC28_REG_RECENT_CH3_MSB 0xA7
128#define ADC28_REG_RECENT_CH4_LSB 0xA8
129#define ADC28_REG_RECENT_CH4_MSB 0xA9
130#define ADC28_REG_RECENT_CH5_LSB 0xAA
131#define ADC28_REG_RECENT_CH5_MSB 0xAB
132#define ADC28_REG_RECENT_CH6_LSB 0xAC
133#define ADC28_REG_RECENT_CH6_MSB 0xAD
134#define ADC28_REG_RECENT_CH7_LSB 0xAE
135#define ADC28_REG_RECENT_CH7_MSB 0xAF
153#define ADC28_OPCODE_SINGLE_READ 0x10
154#define ADC28_OPCODE_SINGLE_WRITE 0x08
155#define ADC28_OPCODE_SET_BIT 0x18
156#define ADC28_OPCODE_CLEAR_BIT 0x20
157#define ADC28_OPCODE_BLOCK_READ 0x30
158#define ADC28_OPCODE_BLOCK_WRITE 0x28
164#define ADC28_SYSTEM_STATUS_BOR 0x01
165#define ADC28_SYSTEM_STATUS_I2C_SPEED 0x20
166#define ADC28_SYSTEM_STATUS_SEQ_STATUS 0x40
172#define ADC28_GENERAL_CFG_RST 0x01
173#define ADC28_GENERAL_CFG_DWC_EN 0x10
174#define ADC28_GENERAL_CFG_STATS_EN 0x20
180#define ADC28_DATA_CFG_APPEND_STATUS_NONE 0x00
181#define ADC28_DATA_CFG_APPEND_STATUS_CHID 0x10
182#define ADC28_DATA_CFG_APPEND_STATUS_ALERT 0x20
183#define ADC28_DATA_CFG_FIX_PAT 0x80
189#define ADC28_BUSY_CFG_BUSYTIME_1_2US 0x00
190#define ADC28_BUSY_CFG_BUSYTIME_6_0US 0xC0
196#define ADC28_OPMODE_CFG_CLK_DIV_0_75MS 0x00
197#define ADC28_OPMODE_CFG_CLK_DIV_1_5MS 0x01
198#define ADC28_OPMODE_CFG_CLK_DIV_3MS 0x02
199#define ADC28_OPMODE_CFG_CLK_DIV_6MS 0x03
200#define ADC28_OPMODE_CFG_CONV_MODE_MANUAL 0x00
201#define ADC28_OPMODE_CFG_CONV_MODE_AUTO 0x20
207#define ADC28_SEQUENCE_CFG_SEQ_MODE_MANUAL 0x00
208#define ADC28_SEQUENCE_CFG_SEQ_MODE_AUTO 0x01
209#define ADC28_SEQUENCE_CFG_SEQ_START 0x10
215#define ADC28_CHANNEL_0 0x00
216#define ADC28_CHANNEL_1 0x01
217#define ADC28_CHANNEL_2 0x02
218#define ADC28_CHANNEL_3 0x03
219#define ADC28_CHANNEL_4 0x04
220#define ADC28_CHANNEL_5 0x05
221#define ADC28_CHANNEL_6 0x06
222#define ADC28_CHANNEL_7 0x07
223#define ADC28_CHANNEL_MASK 0x0F
229#define ADC28_AUTO_SEQ_CH0 0x01
230#define ADC28_AUTO_SEQ_CH1 0x02
231#define ADC28_AUTO_SEQ_CH2 0x04
232#define ADC28_AUTO_SEQ_CH3 0x08
233#define ADC28_AUTO_SEQ_CH4 0x10
234#define ADC28_AUTO_SEQ_CH5 0x20
235#define ADC28_AUTO_SEQ_CH6 0x40
236#define ADC28_AUTO_SEQ_CH7 0x80
237#define ADC28_AUTO_SEQ_ALL_CH 0xFF
243#define ADC28_ADC_RESOLUTION 4096.0f
244#define ADC28_VDD_3V3 3.3f
245#define ADC28_VDD_5V 5.0f
251#define ADC28_THRESHOLD_LIMIT 0x0FFF
252#define ADC28_HYSTERESIS_LIMIT 0x0F
253#define ADC28_EVENT_COUNT_LIMIT 0x0F
254#define ADC28_HYSTERESIS_MASK 0x0F
255#define ADC28_EVENT_COUNT_MASK 0x0F
256#define ADC28_HIGH_THR_MSB_MASK 0xFF
257#define ADC28_LOW_THR_MSB_MASK 0xFF
258#define ADC28_HIGH_THR_LSB_MASK 0xF0
259#define ADC28_LOW_THR_LSB_MASK 0xF0
260#define ADC28_4_LSB_MASK 0x000F
267#define ADC28_DEVICE_ADDR_R1_0_R2_OPEN 0x17
268#define ADC28_DEVICE_ADDR_R1_100K_R2_OPEN 0x14
269#define ADC28_DEVICE_ADDR_R1_OPEN_R2_0 0x10
270#define ADC28_DEVICE_ADDR_R1_OPEN_R2_100K 0x13
271#define ADC28_DEVICE_ADDRESS ADC28_DEVICE_ADDR_R1_0_R2_OPEN
289#define ADC28_MAP_MIKROBUS( cfg, mikrobus ) \
290 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
291 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
292 cfg.alt = MIKROBUS( mikrobus, MIKROBUS_INT )
adc28_return_value_t
ADC 28 Click return value data.
Definition adc28.h:338
@ ADC28_ERROR
Definition adc28.h:340
@ ADC28_OK
Definition adc28.h:339
err_t adc28_set_high_threshold(adc28_t *ctx, uint8_t channel, uint16_t high_th)
ADC 28 set high threshold function.
err_t adc28_set_hysteresis(adc28_t *ctx, uint8_t channel, uint8_t hysteresis)
ADC 28 set hysteresis function.
err_t adc28_write_reg(adc28_t *ctx, uint8_t reg, uint8_t data_in)
ADC 28 write register function.
err_t adc28_init(adc28_t *ctx, adc28_cfg_t *cfg)
ADC 28 initialization function.
err_t adc28_read_voltage(adc28_t *ctx, uint8_t channel, float *voltage)
ADC 28 read voltage function.
void adc28_cfg_setup(adc28_cfg_t *cfg)
ADC 28 configuration object setup function.
err_t adc28_default_cfg(adc28_t *ctx)
ADC 28 default configuration function.
err_t adc28_set_low_threshold(adc28_t *ctx, uint8_t channel, uint16_t low_th)
ADC 28 set low threshold function.
uint8_t adc28_get_alert_pin(adc28_t *ctx)
ADC 28 get alert pin function.
err_t adc28_read_raw_adc(adc28_t *ctx, uint8_t channel, uint16_t *raw_data)
ADC 28 read raw ADC function.
err_t adc28_read_reg(adc28_t *ctx, uint8_t reg, uint8_t *data_out)
ADC 28 read register function.
err_t adc28_read_regs(adc28_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
ADC 28 read registers function.
err_t adc28_set_event_count(adc28_t *ctx, uint8_t channel, uint8_t event_count)
ADC 28 set event count function.
err_t adc28_write_regs(adc28_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
ADC 28 write registers function.
ADC 28 Click configuration object.
Definition adc28.h:322
pin_name_t alt
Definition adc28.h:326
uint32_t i2c_speed
Definition adc28.h:328
pin_name_t scl
Definition adc28.h:323
pin_name_t sda
Definition adc28.h:324
uint8_t i2c_address
Definition adc28.h:329
ADC 28 Click context object.
Definition adc28.h:302
digital_in_t alt
Definition adc28.h:304
i2c_master_t i2c
Definition adc28.h:307
float vdd
Definition adc28.h:313
uint8_t slave_address
Definition adc28.h:310